umask für sftp User setzen

 · 2 min read
 · Stefan Hellmann
Last updated: November 18, 2022

Wie gibt man Benutzern die sich per sftp auf einen Server verbinden eine bestimmte umask vor?

Ohne groß nachzudenken habe ich als erstes eine umask in der ~/.bashrc eingetragen. Wenn ich jetzt darüber nachdenke, frage ich mich, was mein "jüngeres" Ich sich dabei wohl gedacht hat :)

Aber von Anfang an. Es existiert ein User der eine Gruppe zugeordnet ist. Jeder aus dieser Gruppe soll Dateien in einem Verzeichnis bearbeiten und löschen können.

Als Beispiel: Walter ist der Gruppe Senioren zugeorndet

Wenn Walter sich jetzt direkt auf einem Server einloggt und eine Datei erstellt sieht das ganze so aus:

walter@combuder:~$ touch MeinTagebuch.txt
walter@combuder:~$ ls -l MeinTagebuch.txt
-rw-r--r-- 1 walter senioren 0 Nov 18 06:44 MeinTagebuch.txt

Hier greifen die alle Standards und die umask ist:

walter@combuder:~$ umask
0022

Mein ersters (und eigentlich dummer) Ansatz war dann die umask in der .bashrc zu setzen:

umask 0112

Das neu erstellte Tagebuch sieht dann auch gut aus:

-rw-rw-r-- 1 walter senioren 0 Nov 18 06:49 MeinTagebuch.txt

Walter ist aber ein Advanced User und lädt sein Tagebuch per sftp hoch. Dort greift dann weiterhein die normale umask. Der zuständige Part in der /etc/ssh/sshd_config sieht so aus:

Match User walter
ForceCommand internal-sftp
ChrootDirectory /home/walter

Nach ein bischen suchen in den man Pages bin ich als erstes auf das hier in der man Page von sftp gestoßen:

INTERACTIVE COMMANDS
    Once in interactive mode, sftp understands a set of commands similar to those of ftp(1).  Commands are case insensitive.  Pathnames that contain spaces must be enclosed in quotes.  Any special characters contained within pathnames that are recognized by glob(3) must be escaped with backslashes (‘\’).
    ...
    lumask umask
        Set local umask to umask.
    ...

Das klingt gut. Ich denke aber, dass Walter das, obwohl er advanced ist, das ein oder andere mal nicht sauber die umask setzen wird un ich dann wieder Berechtigungen nachpflegen muss. Also weiter suchen in den man Pages. Der sftp-server kann folgenden Option:

-u umask

Die Config sieht dann so aus:

Match User walter
ForceCommand internal-sftp -u 0002
ChrootDirectory /home/walter

Das klaptt dann auch ganz gut. Bis Walter dann sein winscp rausholt, der das auch mal gerne Überschreibt :-(

Zwei Sache gelernt:

Erst denken und dann tippen!

Windows ist doof. Selbst extra Programme verhalten sich komisch.